<template>
    <view>
        <view class="goods-list">
            <view v-for="(item , i) in goodsList" :key="i" @click="gotoDetail(item)">
                <my-goods :goods="item"></my-goods>
            </view>
        </view>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                // 查询对象(关键字 & 分类id & 页码 & 页总数)
                queryObj: {
                    query: '',
                    cid: '',
                    pagenum: 1,
                    pagesize: 10
                },
                goodsList: [],
                total: 0,
                // 节流控制 (防止未结束再次发送请求)
                isloading: false
            };
        },
        methods: {
            async getGoodsList(cb) {
                this.isloading = true
                const {data: res} = await uni.$http.get('/api/public/v1/goods/search', this.queryObj)
                this.isloading = false
                // 数据请求成功 , 立即回调cb函数 (关闭下拉刷新效果)
                cb && cb()
                
                if (res.meta.status !== 200) return uni.$showMsg()
                this.goodsList = [...this.goodsList, ...res.message.goods]
                this.total = res.message.total
            },
            gotoDetail(item){
                uni.navigateTo({
                    url:'/subpkg/goods_detail/goods_detail?goods_id='+item.goods_id
                })
            }
        },
        onLoad(options) {
            // 跳转URL携带的参数
            this.queryObj.query = options.query || ''
            this.queryObj.cid = options.cid || ''
            this.getGoodsList()
        },
        // 下拉触底事件 (页数+1)
        onReachBottom() {
            // 判断是否加载完
            if(this.queryObj.pagenum * this.queryObj.pagesize >= this.total)
                return uni.$showMsg('到达最低部啦!')
            // 节流控制
            if(this.isloading) return
            this.queryObj.pagenum += 1
            this.getGoodsList()
        },
        // 上拉刷新事件
        onPullDownRefresh() {
            this.queryObj.pagenum = 1
            this.total = 0
            this.isloading = false
            this.goodsList = []
            
            // 重新加载
            this.getGoodsList(() => uni.stopPullDownRefresh())
        }
    }
</script>

<style lang="scss">


</style>
